Systems and methods to identify home addresses of mobile devices

ABSTRACT

Systems and methods including a database storing the identifiers of cells representing residential parcels of real estate properties. Mobile devices determine the coordinates of their locations during a period of time using a location determination system, such as a global positioning system. The coordinates are converted to cell identifiers to look up corresponding residential parcels that have been visited by the mobile devices. A server generates a visitation data set for each residential parcel visited by each mobile device, including different types of frequencies of the mobile device visiting the residential parcel (e.g., night, weekend). A server filters the residential parcels based on visitation frequencies to identify home candidates and then further filters the home candidates based on the count of mobile devices having the home candidates. A home parcel, and thus its address, is identified from the filtered home candidate(s) for each mobile device.

FIELD OF THE TECHNOLOGY

At least one embodiment of the disclosure relates to the determinationof regions in which mobile devices are located in general and morespecifically but not limited to, the determination of the households ofmobile devices.

BACKGROUND

A location determination system, such as a Global Positioning System(GPS), allows a mobile device, such as a mobile phone, a smart phone, apersonal media player, a GPS receiver, etc., to determine its currentlocation on the earth. The location of the mobile device is typicallycalculated as a set of coordinates, such as the longitude and latitudecoordinates of a point on the surface of the earth.

However, the location of the mobile device in the form of coordinates ofa point on the surface of the earth does not provide sufficientinformation of interest about the location, such as whether the mobiledevice is within a particular region associated with a set of knownproperties.

For example, it may be of interest in certain applications to determinewhether the location of the mobile device is within the store of amerchant, within the home of the user of the mobile device, within arecreation area, within a commercial district, etc.

For example, U.S. Pat. App. Pub. No. 2014/0012806, published Jan. 9,2014 and entitled “Location Graph Based Derivation of Attributes”,discusses the generation of a user profile based on mapping thelocations of a mobile device to predefined geographical regions and usethe attributes associated with the predefined geographical regions toderive and/or augment the attributes of the user profile.

For example, U.S. Pat. App. Pub. No. 2008/0248815, published Oct. 9,2008 and entitled “Systems and Methods to Target Predictive Locationbased Content and Track Conversions”, discusses the need to analyze thelocation of a mobile device to determine the types of businesses thatthe user of the mobile device typically visits, or visited. When thelocation of a mobile device is within a predefined distance from eitherthe address of a particular business or a geographic location associatedwith the business, or within a geometric perimeter of the particularbusiness location, it may be determined that the user of the mobiledevice was at the particular business.

Ray Casting is a known technology to determine whether a given point iswithin a polygon represented by a set of vertexes. However, Ray Castingis computational intensive involving floating point number computations.

The Military Grid Reference System (MGRS) is a standard used forlocating points on the earth. It uses grid squares of various lengths atdifferent resolutions, such as 10 km, 1 km, 100 m, 10 m, or 1 m,depending on the precision of the coordinates provided. A MGRScoordinate includes a numerical location within a 100,000 meter square,specified as n+n digits, where the first n digits give the easting inmeters, and the second n digits give the northing in meters.

The disclosures of the above discussed patent documents are herebyincorporated herein by reference.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments are illustrated by way of example and not limitation inthe figures of the accompanying drawings in which like referencesindicate similar elements.

FIG. 1 shows a system to determine whether a mobile device is within aregion having a predetermined geographical boundary according to oneembodiment.

FIGS. 2-4 illustrate a grid system used to determine whether a locationof a mobile device is within the geographical boundary of a regionaccording to one embodiment.

FIGS. 5-7 illustrate a hierarchical grid system used to determinewhether a location of a mobile device is within the geographicalboundary of a region according to one embodiment.

FIGS. 8 and 9 show a top level grid and the identification of cellswithin the grid according to one embodiment.

FIG. 10 shows an intermediate level grid and the identification of cellswithin the grid according to one embodiment.

FIG. 11 shows the identification of cells within a grid having thefinest resolution in a grid hierarchy according to one embodiment.

FIG. 12 shows the method to determine whether a location of a mobiledevice is within the geographical boundary of a region according to oneembodiment.

FIG. 13 illustrates an example of converting the coordinates of alocation to an identifier of a cell and converting the identifier of thecell to the coordinates of a vertex of the cell according to oneembodiment.

FIG. 14 shows a system configured to map a location of a mobile deviceto one or more identifications of regions according to one embodiment.

FIG. 15 illustrates a data processing system according to oneembodiment.

FIG. 16 shows a method of mapping a location of a mobile device to aregion according to one embodiment.

FIG. 17 shows a system of one embodiment to determine the addresses ofreal estate properties in which a mobile device has visited.

FIGS. 18 and 19 show a system of one embodiment to select a home addressof a mobile device from address of real estate properties that have beenvisited by a mobile device during a period of time.

FIG. 20 shows a method to identify a home parcel of a mobile deviceaccording to one embodiment.

DETAILED DESCRIPTION

The following description and drawings are illustrative and are not tobe construed as limiting. Numerous specific details are described toprovide a thorough understanding. However, in certain instances, wellknown or conventional details are not described in order to avoidobscuring the description. References to one or an embodiment in thepresent disclosure are not necessarily references to the sameembodiment; and, such references mean at least one.

One embodiment of the disclosure provides a computationally efficientmethod and system to determine whether a location of the mobile deviceis within a predetermined geographical boundary of a region and/or todetermine, among a plurality of predefined regions, the identity of oneor more regions within which the location of the mobile device ispositioned.

FIG. 1 shows a system to determine whether a mobile device is within aregion having a predetermined geographical boundary according to oneembodiment.

In FIG. 1, a location determination system uses the wireless signals(e.g., 179) transmitted to and/or from the mobile device (109) todetermine the location (111) of the mobile device (109) on the surfaceof the earth.

For example, the location determination system may use GlobalPositioning System (GPS) satellites (e.g., 117) (and/or base stations(e.g., 115)) to provide GPS signals to the mobile device (109). Themobile device (109) is configured to determine the location (111) of themobile device (109) based on the received GPS signals. In general,multiple GPS satellites (e.g., 117) and/or base stations (e.g., 115) areused to provide the wireless signals (e.g., 179) from differentlocations for a GPS receiver to determine its locations.

In FIG. 1, the mobile device (109) is configured with a cellularcommunications transceiver to communicate with the base stations (e.g.,113, 115) of a cellular communications network.

For example, in one embodiment, the mobile device (109) is configured touse signal delays in the cellular communications signals to or from aplurality of cellular base stations (e.g., 113, . . . , 115) to computethe location coordinates of the mobile device (109).

In FIG. 1, a server (187) is configured to communicate with the mobiledevice (109) via the network (189) and the cellular communicationsinfrastructure (e.g., the base station (113)). The server (187) isconnected to a database (181) storing information about the predefinedregions (e.g., 101, 103, . . . 105, 107).

For example, the database (181) is configured to store theidentifications of a set of cells that are within the boundary of aregion (e.g., 111). The server (187) is configured to convert thelocation (111) of the mobile device (109) to a cell identification andsearch the identifications of the set of cells representing the region(101) to determine if the cell identification converted from thelocation (111) of the mobile device (109) is in the set of cellidentifications representing the region (101). If the cellidentification of the location (111) is found in the set of cellidentifications representing the region (101), the location (111) isconsidered being within the boundary of the region (e.g., 111).

In one embodiment, a hierarchical grid system is used to construct cellsthat are within the boundary of the region (e.g., 111). Thus, the numberof cells within the region (e.g., 111) can be reduced, while theprecision of the determination can be selected at a desired level (e.g.,1 meter).

In one embodiment, the identifications of the cells are configured to besigned integer numbers. Thus, any known technologies for searching agiven number within a set of signed integer numbers can be used toefficiently determine whether the cell identifier of a location (111) iswithin the set of cell identifiers of the region (101).

In one embodiment, the conversion of the location coordinates to a cellidentifier is configured for improved computation efficiency. The cellidentifier is also configured for efficient determination of theresolution of the grid in which the cell is located, the coordinates ofthe vertexes of the cell, the bounding boxes of the cell, and theidentifications of the neighbors of the cells. Details and examples areprovided below.

In one embodiment, a given region (e.g., polygon) on earth isrepresented by a set of cells in a hierarchical, regular grid in alongitude latitude space. In the longitude latitude space, the cells areuniform rectangles/squares at a given resolution; the cell identifiesare constructed from the digits of the longitude/latitude coordinatesfor improved efficiency in conversion between coordinates and cellidentifiers. In one embodiment, the resolution levels of the gridscorrespond to the precision of the longitude/latitude coordinates interms of the number of digits used to after the decimal point torepresent the longitude/latitude coordinates.

At a given resolution in the grid, the identity of the cell thatcontains a given point identified by a longitude/latitude pair can becomputed via simple manipulations of the digits of thelongitude/latitude pair, as illustrated in FIG. 13.

FIGS. 2-4 illustrate a grid system used to determine whether a locationof a mobile device is within the geographical boundary of a regionaccording to one embodiment.

In FIG. 2, a grid (121) of cells is used to identify an approximation ofthe region (101) at a given level of resolution of the grid (121). Theresolution level corresponds to the size of the cells in the grid (121).

In FIG. 2, the region (101) is represented as a polygon having a set ofvertexes (e.g., 123). The set of line segments connecting theneighboring vertexes (e.g., 123) of the region (101) defines theboundary of the region (101).

FIG. 3 illustrates the selection of a set of cells (e.g., 127) that areconsidered to be within the boundary of the region (101). Variousdifferent methods and/or criteria can be used to classify whether a cellis within the boundary of the region (101), especially the cells thatare partially in the region (101) and contain a portion of the boundaryof the region (101). The disclosure of the present application is notlimited to a particular way to identify or classify whether a cell thatis within the boundary of the region (101).

For example, a cell may be classified as being with the region (101)when the overlapping common portion between the cell and the region(101) is above a predetermined percentage of the area of the cell.

For example, a cell may be classified as being with the region (101)when a length of one or more segments of the region (101) going throughthe cell is above a threshold.

For example, the vertexes of the region (101) may be mapped to thenearest grid points to determine an approximation of the boundary of theregion (101) that aligns with the grid lines to select the cells thatare located within the approximated boundary of the region (101).

FIG. 4 illustrates the determination of the location (111) within theset of cells (131, . . . , 133, . . . , 139) according to oneembodiment. In FIG. 4, each of the cells (131, . . . , 133, . . . , 139)represents a portion of the region (101). To determine whether thelocation (111) is within the boundary of the region (101), the system isconfigured to determine whether the set of cells (131, . . . , 133, . .. , 139) contains the location (111).

In one embodiment, to efficiently determine whether any of the cells(131, . . . , 133, . . . , 139) contains the location (111), each of thecells (131, . . . , 133, . . . , 139) is assigned a cell identifier. Inone embodiment, each of the cell identifier is a signed integer forimproved computation efficiency; and the cell identifier is configuredin such a way that the coordinates of any location within the cell canbe manipulated via a set of predetermined, computationally efficientrules to provide the same cell identifier, as further illustrated inFIGS. 12 and 13.

In FIG. 4, after the coordinates of the location (111) is converted tothe cell identifier of the cell (133) that contains the location (111),the system determines whether the location (111) is within the regioncorresponding to the set of cells (131, . . . , 133, . . . , 139) bysearching in the cell identifiers of the set of cells (131, . . . , 113,. . . , 139) representative of the region (101) to find a match to thecell identifier of the cell (133) that is converted from the coordinatesof the location (111). If a match is found, the location (111) isdetermined to be within the region (101); otherwise, the location (111)is determined to be outside of the region (101).

To improve the accuracy in the approximation of the region (101) andcomputational efficiency, the cells of a hierarchical grid system isused to approximate the region (101). FIGS. 5-7 illustrate ahierarchical grid system used to determine whether a location of amobile device is within the geographical boundary of a region accordingto one embodiment.

In FIG. 5, grids of different resolutions are used to identify a set ofcells to approximate the region (101). The grids has a predeterminedhierarchy, in which the grid lines of a high level grid aligns with someof the grid lines of a low level grid such that the cells of the lowlevel grid subdivide the cells of the high level grid. The grids ofdifferent resolutions have different cell sizes.

In general, a grid having a higher resolution and thus smaller cell sizecan approximate the region (101) in better precision, but uses morecells.

In one embodiment, the cells from the lower resolution grid is used inthe interior of the region (101) to reduce the number of cells used; andthe cells from the higher resolution grid is used near the boundary ofthe region (101) to improve precision in using the set of cells toapproximately represent the region (101).

For example, in one embodiment, the lowest resolution gird is applied toidentify a set of cells to approximate the region (101). The cells inthe lowest resolution grid that contain the boundary of the region (101)are split in accordance with the grid of the next resolution level toidentify cells in the grid of the next resolution level for improvedprecision in representing the region (101). The cell splitting processcan be repeated for further improved precision using a higher resolutiongrid.

FIG. 6 illustrates the use of cells from two levels of hierarchicalgrids to approximate the region (101).

After the set of cells used to approximate the region (101) areidentified (e.g., as illustrated FIG. 6), the system is configured todetermine whether the location (111) of the mobile device (109) iswithin the region (101) based on whether any of the set of cellsrepresenting the region contains the location (111), in a way asillustrated in FIG. 7.

For example, in one embodiment, each of the cells used in FIG. 7 torepresent a part of the region (101) is provided with a cell identifier.The coordinates of the location (111) is mapped to a cell identifier ata given resolution level. The system is configured to search in the setof cell identifiers of region (101) at the corresponding resolutionlevel to determine whether there is a match to the cell identifier asdetermined from the coordinates of the location (111). If a match incell identifier is found at any resolution level, the location (111) isdetermined to be within the region (101) represented by the set ofcells; otherwise, the location (111) is determined to be outside theboundary of the region (101).

In one embodiment of FIG. 1, a hierarchical grid system is used toapproximate the predefined regions (101, 103, . . . , 105, 106) withcells. Each of the cells is classified/identified as being in one ormore of the regions (101, 103, . . . , 105, 106). The database (181)stores the identifiers of the cells in association with the identifiesof the respective regions (101, 103, . . . , 105, 106); and the server(187) is configured to compute the identifiers of the cells of differentresolutions that contain the location (111) and determine if any of thecell identifiers stored in the database (181) in association with theidentifiers of the regions (101, 103, . . . , 105, 106) has the samecell identifier as the location (111). If a matching cell identifier isfound, the location (111) of the mobile device (109) is determined to bewith the respective region(s) (e.g., 101) associated with thecorresponding cell identifier; otherwise, the location (111) isdetermined to be outside all of the regions (101, 103, . . . , 105, 106)represented by the set of cell identifiers stored in the database (181).

FIGS. 8 and 9 show a top level grid and the identification of cellswithin the grid according to one embodiment.

In one embodiment, the location (111) of the mobile device (109) isdetermined to be on the surface of the earth in terms of the longitudeand latitude coordinates. In a coordinate system as illustrated in FIG.8, the longitude coordinates are configured to be within the range of−180 degrees to 180 degrees; and the latitude coordinates are configuredto be with the range of −90 degrees to 90 degrees.

In one embodiment, a hierarchical grid system on the surface of theearth is based on a regular grid in the longitude latitude spaceillustrated in FIG. 9.

In FIG. 9, the cells in the top level grid have a uniform size of 10degrees in longitude and 10 degrees in latitude. In FIG. 9, the cellsare identified by the row identifiers ranging from −9 to −1 and 1 to 9and column identifiers ranging from 1 to 36.

In FIG. 9, the row and column identifiers are configured in a way toavoid using zero as a row identifier or a column identifier.

In FIG. 9, the row identifier of 1 is assigned to the row of cellsbetween 0 to 10 degrees of latitude; the row identifier of 2 is assignedto the row of cells between 10 to 20 degrees of latitude; etc. The rowsof cells between 0 to −90 degrees of latitudes are assigned similar rowidentifiers with a negative sign. For example, the row identifier of −1is assigned to the row of cells between 0 to −10 degrees of latitude;the row identifier of −2 is assigned to the row of cells between −10 to−20 degrees of latitude; etc. As a result, the row identifier has a signand a single digit for the top level cells illustrated in FIG. 9; andthe single digit is not zero for any of the rows. Thus, for eachlocation that is inside a cell in the top level grid as illustrated inFIG. 9, the row identifier of the cell containing the location has thesame sign as the latitude coordinate of the location and the singledigit that equals to 1 plus the tens digit of the latitude coordinate ofthe location.

In FIG. 9, the column identifier of 1 is assigned to the column of cellshaving longitude coordinates between −180 to −170 degrees; the columnidentifier of 2 is assigned to the column of cells having longitudecoordinates between −170 to −160 degrees; etc. Thus, for each locationthat is inside a cell in the top level grid as illustrated in FIG. 9,the column identifier of the cell containing the location has no sign(e.g., the column identifier is always greater than zero) and one or twodigits that correspond to adding 18 to a number formed by using thehundreds digit of the longitude as the tens digit and the tens digit ofthe longitude as the ones digit.

The combination of the row identifier and the column identifier of acell uniquely identifies the cell within the top level grid asillustrated in FIG. 9. For example, the digits of the column identifiercan be appended to the row identifier to generate a signed number thatuniquely identifies the cell within the grid illustrated in FIG. 9. Fora given cell identifier, the row identifier and the column identifiercan be unambiguously deduced from the cell identifier itself, since therow identifier has a signal digit and a sign. The longitude and latitudecoordinates of the vertexes of the cell can be computed from the rowidentifier and the column identifier.

Although FIG. 9 illustrates a preferred way to code the row identifiersand the column identifiers based on the longitude and latitudecoordinates of the locations within the cells, alternative codingschemes can be used.

For example, the rows can be coded from 1 to 18 for latitudes from −90degrees to 90 degrees; and the columns can be coded from 10 to 45 forlongitudes from −180 degrees to 180 degrees. Thus, both the row andcolumn identifiers are positive integers, while the column identifiersalways have two digits.

For example, the rows can be coded from 11 to 28 for latitudes from −90degrees to 90 degrees; and the columns can be coded from 11 to 46 forlongitudes from −180 degrees to 180 degrees. Thus, both the row andcolumn identifiers are positive integers having two digits.

FIG. 10 shows an intermediate level grid and the identification of cellswithin the grid according to one embodiment. In FIG. 10, a given cell ata higher level grid (e.g., a cell in the top level grid as illustratedin FIG. 9) is subdivided into 10 rows and 10 columns. The coding of therows and columns correspond to the measurement directions of thelongitude and latitudes coordinates such that the corresponding digitsin the longitude and latitudes coordinates at a given precision levelcan be used directly as the row and column identifiers of the sub-cellswithin the cell at the higher level grid.

For example, when the cell that is being subdivided into the 10 rows and10 columns has a size of 10 degrees in longitude and 10 degrees inlatitude (e.g., as illustrated in FIG. 9), the row identifier and columnidentifier of the sub-cells correspond to the ones digit of the latitudeand longitude coordinates of the points within the respective sub-cells.

For example, when the cell that is being subdivided into the 10 rows and10 columns has a size of 1 degree in longitude and 1 degree in latitude,the row identifier and column identifier of the sub-cells correspond tothe one-tens digit of the latitude and longitude coordinates of thepoints within the respective sub-cells.

FIG. 11 shows the identification of cells within a grid having thefinest resolution in a grid hierarchy according to one embodiment. InFIG. 11, the row identifiers and column identifiers are padded by 1, incomparison with the row and column coding scheme illustrated in FIG. 10.

In one embodiment, an identifier cell for a given resolution includessufficient information to identify the corresponding cells in the higherlevel grid(s) that contains the cell. Thus, a cell identifier uniquelyidentifies a cell in the entire hierarchical grid without ambiguity.

FIG. 12 shows the method to determine whether a location of a mobiledevice is within the geographical boundary of a region according to oneembodiment.

In FIG. 12, the location (111) of the mobile device (109) is determinedin terms of the longitude coordinate (143) and the latitude coordinate(145).

For a given resolution level (147), the longitude coordinate (143) andthe latitude coordinate (145) are truncated to generate the columnidentifier (149) and the row identifier (151). Applying (155) theresolution level (147) includes truncating the longitude coordinate(143) and the latitude coordinate (145) to the corresponding digits ofprecision to generate the column identifier (149) and the row identifier(151). In one embodiment, the digits corresponding to the top level gridand the bottom level grid at the given resolution are adjusted accordingto FIGS. 9 and 11.

In FIG. 12, the column identifier (149) and the row identifier (151) arecombined to generate the cell identifier (153) of the location (111) ofthe mobile device at the given resolution level (147).

In one embodiment, the database (181) stores a set of cell identifiers(161, . . . , 163) that are associated with the region (101) defined bya predetermined boundary. The server (187) searches (157) the set ofcell identifiers (161, . . . , 163) to find a match with the cellidentifier (153). If a match is found, the location (111) of the mobiledevice (109) is determined to be within the boundary of the region(101).

In one embodiment, the database (181) stores a set of cell identifiers(e.g., 161, . . . , 163, 165, . . . ) associated with respectivedifferent regions (e.g., 101, 103, . . . ). When the cell identifier(153) of the location (111) of the mobile device (109) is found to bematching with a particular cell identifier (e.g., 163 or 165), theregion (e.g., 101 or 103) associated with the particular cell identifier(e.g., 163 or 165) is determined to be the region in which the mobiledevice (141) is located.

In one embodiment, when a cell contains the boundary of two regions(e.g., 101 and 103), the cell identifier of the cell can be associatedwith both regions (e.g., 101 and 103). The system may optionally furtherdetermine which region the cell is in based on the coordinates of thevertexes defining the boundary (or other parameters that define theboundary between the regions).

FIG. 13 illustrates an example of converting the coordinates of alocation to an identifier of a cell and converting the identifier of thecell to the coordinates of a vertex of the cell according to oneembodiment.

In FIG. 13, the location has a latitude coordinate of −51.12345678 and alongitude coordinate of −41.12345678. A resolution at the fifth digitafter the decimal point is applied to the coordinates to generate thetruncated coordinates (−41.12345, −51.12345). The decimal point isremoved to obtain the longitude digits −4112345 and the latitude digits−5112345. Since the length of the equator of the earth is about 40,075km, the cell size near the equator is about 1.11 meters at theresolution corresponding to the fifth digit.

In accordance with the scheme for the top level grid illustrated in FIG.9, the tens digit for the latitude coordinate is padded with one(without considering the sign of the latitude); and the hundreds digitand tens digit, including the sign, of the longitude coordinate ispadded with 18 to generate the row identifier −6 and the columnidentifier 14 for the top level grid.

In accordance with FIG. 10, the row identifiers and column identifiersof the sub-cells in the hierarchical grid correspond to the respectivelatitude digits and longitude digits (1, 1, 2, 3, 4).

In accordance with FIG. 11, the row identifiers and column identifiersof the sub-cells in the bottom hierarchy is padded with 1, if thelongitude and/or the latitude coordinates of the location is not exactlyon the grid lines of the resolution level (e.g., if the longitude orlatitude coordinate has nonzero digits after the fifth digit behind thedecimal point). One is not padded at the last digit when the longitudeand/or the latitude coordinates of the location is exactly on the gridlines of the resolution level (e.g., if the longitude or latitudecoordinate has no nonzero digits after the fifth digit behind thedecimal point). According to this padding scheme, in the northernhemisphere locations on the northern edge of a cell are included in thecell but not the locations on the southern edge. In the southernhemisphere, locations on the southern edge of a cell are included in thecell but not the locations on the northern edges. Locations on theeastern edge of a cell are included in the cell, but not the westernedge.

Thus, the location (−41.12345678, −51.12345678) has the row and columnidentifiers −6112346 and 14112346. The digits of the column identifierare appended to the digits of the row identifier to generate the cellidentifier −611234614112346.

In FIG. 13, the row and column identifiers can be recovered from thecell identifier. The number of digits in the cell identifier divided by2 provides the number of leading digits for the row identifier; and theremaining digits are for the column identifier. From the row identifierand column identifiers, the latitude digits and longitude digits can becomputed via subtraction of the respective padding. The truncatedcoordinates can be computed from the latitude digits and longitudedigits respectively, which can be used to determine the coordinates of avertex of the cell as (−41.12345, −51.12345). Based on the resolution ofthe cell being at 0.00001, the coordinates of other vertexes of the cellcan be determined as (−41.12346, −51.12345), (−41.12346, −51.12344),(−41.12345, −51.12344). The bounding box of the cell and the neighboringcells can also be easily identified based on the coordinates.

FIG. 13 illustrates a way to append the digits of the column identifierto the digits of the row identifier to generate the cell identifier.Alternatively, the row identifier and the column identifier can becombined in other ways that can be reversed to derive the row identifierand the column identifier from the cell identifier.

For example, when the top level column identifiers are mapped to therange 11 to 46 to have a fixed number of two digits for the top levelcolumn, the column identifier is 2411236. Since there is no ambiguity inthe number of digits used to represent the top level column, the toplevel column identifier (24) can be appended after the top level rowidentifier (−6), which is then appended with the row and columnidentifiers of the next level, and so on. Thus, a cell identifier of−6241111223366 can be generated, with the sign then the first threedigits representing the top level row and column, and two digits forsubsequent next level row and column to identifying the subdivisionwithin the higher level cell.

In some embodiments, the row and column identifiers of the bottom levelare not padded in a way illustrated in FIG. 11 to have different ways toaccount for the locations on grid lines at the lowest level resolution.

FIGS. 9-11 and 13 illustrate a grid hierarchy based on a decimalrepresentation of longitude and latitude coordinates. Alternatively, thegrid hierarchy can be constructed in accordance with longitude andlatitude coordinates expressed using other bases, such as binary,ternary, quintal, octal, duodecimal, etc. in a similar way.

Further, in some embodiments, the longitude and latitude coordinates maybe normalized (e.g., in the standardized data range between 0 to 1); andthe grids can be constructed in the space of the normalized longitudeand latitude coordinates.

The hierarchical grid can also be extended to a three-dimensional space.For example, a hierarchical grid can be constructed with regular gridsin the longitude, latitude, altitude space, or in a mapped or normalizedlongitude, latitude, and altitude space.

FIG. 14 shows a system configured to map a location of a mobile deviceto one or more identifications of regions according to one embodiment.In FIG. 14, the mobile device (109) determines the coordinates (171) ofits location (111) based on the wireless signals (179) to and/or from alocation determination system, such as the Global Positioning System(GPS).

The coordinates (171) are converted to a cell identifier (173) of a cellthat contains the location, e.g., in a way as illustrated in FIG. 12 or13.

In the database (181), a set of cell identifiers are stored inassociation with region identifiers (185), where each of the cellidentifiers is associated with one or more of the respective regionswhen the respective cell contains at least a portion of the one or moreof the respective regions.

In one embodiment, the set of cell identifiers are organized as a cellidentifier tree (183) to facilitate the search of a matching identifier.

For example, the cell identifier tree (183) can be constructed as aself-balancing tree for efficient searching of a cell identifiermatching the cell identifier (173) generated from the coordinates (171)of the mobile device (109).

In general, any methods to search for an identifier with a set ofpredetermined identifiers can be used to search for the matching cellidentifier (173).

From the association of the cells with the region identifiers (185) inthe database, the server (187) determines the identification (175) ofthe one or more defined regions that are at least partially in the cellidentified by the cell identifier (173). Thus, the location (111) of themobile device (109) is determined to be within the region(s) identifiedby the identification (175) of the defined region(s).

Similarly, after regions of different sizes and locations arerepresented via the cells in the hierarchical grid, the system can beconfigured to efficiently compute overlapping portions of regions viasearching for cells having the same identifications.

For example, to determine the approximate overlapping between regions,the percentage of overlapping, the square of overlap, etc., the systemis configured to count a number of overlapped cells to determine theoverlapping.

In one embodiment, a polygon or any other shape is approximated by a setof rectangular and/or square cell of different sizes in a suitablecoordinate system (e.g., in longitude latitude space). Each cell isrepresented by a single number as identifier. The identifiers of thecells used to approximate the polygon or shape can be organized as abinary tree, a self-balanced tree, a Red/Black Tree, or other structuresthat are known to provide logarithmic search time to improve thecomputation efficiency in determining whether a point is within thepolygon or shape.

For example, a polygon representing the boundary of United States ofAmerica USA on a map may include 2,000 vertexes. The Ray Castingalgorithm has O(n) complexity to calculate if a point is within thepolygon. When this polygon is approximated via a hierarchical gridsystem discussed above, the polygon can be represented 700 to 2,000,000cells in the longitude latitude space, depending on the requiredprecision. When the polygon is represented by 2,000,000 cells and theircorresponding identification numbers, searching a matching identifier atthe same precision via a binary tree gives log(2,000,000)=21 complexity,which is much less than 2,000. Thus, the present disclosure improves thecomputational efficiency of identifying a region in which a mobiledevice is located.

FIG. 16 shows a method of mapping a location of a mobile device to aregion according to one embodiment. For example, the method of FIG. 16can be implemented in the system of FIG. 1 and/or FIG. 14, using thegrid system illustrated FIGS. 2-8, and/or the grid system and cellidentifier system illustrated in FIGS. 8-13.

In FIG. 16, a computing apparatus is configured to: identify (221) a setof cells in a grid system that are within the predefined boundary of ageographic region; receive (223) a location (111) of a mobile device(109); convert (225) the location (111) to the identifier of a cell thatcontains the location; and search (227) identifiers of the set of cellsto determine if the cell identifier of the location (111) is in the set.If it is determined (228) that the cell identifier of the location (111)is in the set, the computing apparatus determines (229) that thelocation (111) of the mobile device (109) is in the geographic region.

In one embodiment, the computing apparatus includes at least one of: thedatabase (181) and the server (187).

In one embodiment, the database (181) is configured to store anidentifier of a geographical region (101) having a predefinedgeographical boundary defined by a set of vertexes (e.g., 123) or a setof other parameters, such as a center location and a radius.

The database (181) further stores a set of cell identifiers, each ofwhich identifies a cell that is determined to be within the predefinedgeographical boundary of the geographical region (101).

After the server (187) receives, from a mobile device (109), a location(111) of the mobile device (109), the server (187) converts a set ofcoordinates (143, 145) of the location (111) of the mobile device (109)to a cell identifier (153) of a cell that contains the location (111).In some embodiments, the mobile device (109) generates the cellidentifier (153) at a desired precision level to represent the location(111) of the mobile device (109).

The server (187) determines whether the location (111) of the mobiledevice (109) is within the geographical region (101) based on searchingthe set of cell identifiers to determine if the set has the cellidentifier (153) computed from the coordinates (143, 145) of thelocation (111) of the mobile device (109).

In one embodiment, to convert the set of coordinates (143, 145) of thelocation (143, 145) to the cell identifier (153), the server (187) (orthe mobile device (109)) generates two integers from longitude andlatitude coordinates of the location (111) of the mobile device (109)according to a precision level (e.g., resolution level (147), andcombine the two integers into the first cell identifier (153) withoutusing a floating point number computation.

In one embodiment, each cell using the in the system to approximate theregions and the locations is a rectangle/square area in a longitudelatitude space of locations on the earth. The size of the cell can beunambiguously determined from the cell identifier itself. Further, thelongitude and latitude coordinates of corners of the cell identified bythe cell identifier can be unambiguously determined from the cellidentifier itself.

In one embodiment, the set of cells identified by the set of cellidentifiers to approximate one or more regions (e.g., 101, 103, . . . ,105, . . . , 107) has a plurality of different cell sizes thatcorrespond to a plurality of predetermined cell resolution levels. Eachof the plurality of predetermined cell resolution levels corresponds toa predetermined precision level of longitudes and latitudes of locationson the earth. For example, each of the plurality of predetermined cellresolution levels corresponds to a precision to a predetermined digitafter the decimal point in longitude and latitude coordinates oflocations on the earth.

In one embodiment, a cell identifier itself includes sufficientinformation to determine the resolution level of the cell, thecoordinates of the vertexes of the cell, and the identifiers of theneighboring cells, etc.

In one embodiment, the database (181) stores data mapping each cellidentify in the set of cell identifiers to at least one regionidentifier, where the cell contains a least a part of each of theregions identified by the at least one region identifier. The server(187) is configured to search the set of cell identifiers to find a cellidentifier that matches with the cell identifier (153) computed from thelocation (141) and thus determine at least one region identifierassociated with the matching cell identifier.

For example, in one embodiment, the set of coordinates of the location(111) includes longitude (143) and latitude (145) of the location (111).To converting the coordinates (143, 145) to the cell identifier (153),the server (187) (or the mobile device (109)) selects digits from thelongitude (143) and the latitude (145) of the location (111) inaccordance with a cell resolution level (147) and combines the digitsselected from the longitude (143) and the latitude (145) of the location(111) into an integer representing the cell identifier (153) of thelocation (111).

As illustrated in FIG. 13, selecting the digits from the longitude andthe latitude includes: selecting digits from integer part of thelongitude and a first number of digits from the longitude after thedecimal point of the longitude to form an integer representation of thelongitude at the cell resolution level; and selecting digits frominteger part of the latitude and the same first number of digits fromthe latitude after the decimal point of the latitude to form an integerrepresentation of the longitude at the cell resolution level.

In one embodiment, to generate the column identifier and row identifierof the location (111), a predetermined number (e.g., one) is added to adigit of the integer representation of the latitude that corresponds tothe tens digit of the latitude; and a sign is provided to the integerrepresentation of the latitude according to the sign of the latitude.

In one embodiment, after providing a sign to the integer representationof the longitude according to the sign of the longitude, a predeterminednumber (e.g., eighteen) is added to digits of the integer representationof the longitude that corresponds to the hundreds digit and tens digitof the longitude, in view of the sign provided to the integerrepresentation of the longitude.

In one embodiment, when the latitude coordinate has a non-zero portionthat is discarded during the selection of the latitude digits for theinteger representation of the latitude, one is added to the ones digitof the integer representation of the latitude without considering thesign of the integer representation of the latitude. When the longitudecoordinate has a non-zero portion that is discarded during the selectionof the longitude digits for the integer representation, one is added tothe ones digit of the integer representation of the longitude withoutconsidering the sign of the integer representation of the longitude.

In one embodiment, after the server (187) receives data representing thepredefined geographical boundary of the geographical region, such as thecoordinates of the vertexes of a region having a polygon shape, thecoordinates of the center and the radius of a region having a circularshape, etc., the server (187) identify, in a hierarchy of cell grids,the set of cell identifiers that are determined to be within thepredefined geographical boundary.

In one embodiment, when the set of cells being searched having differentresolutions (cell sizes), the location (111) of the mobile device (109)is converted to a plurality of cell identifiers at the correspondingresolutions; and the server (187) is configured to search a match of anyof the cell identifiers at the corresponding resolutions computed fromthe location (111) of the mobile device (109).

For example, the identifiers of the cells of different sizes/resolutionsto represent the regions can be organized in a single tree; and theidentifiers of the location (111) of the mobile device (109) ofcorresponding sizes/resolutions can be searched concurrently or oneafter another to find a match.

For example, the identifiers of the cells of different sizes/resolutionsto represent the regions can be organized in separate trees according tocell sizes/resolutions; and the identifiers of the location (111) of themobile device (109) of corresponding sizes/resolutions can be searchedconcurrently or one after another in the respective trees forcorresponding sizes/resolutions.

In one embodiment, each grid in the hierarchy of cell grids correspondsto a rectangle/square grid in longitude latitude space of locations onthe earth with a predetermined resolution level that corresponds to aprecision level in a floating point decimal representation of longitudeand latitude coordinates.

In one embodiment, to identify the homes of mobile devices, parcelboundaries of the real estate properties are used to define geographicalregions. Each of the regions/parcels can be identified by a street ormailing address or other identifiers. After the parcels areapproximated/represented by cells in a hierarchical grid discussedabove, the database (181) stores the data associating the cellidentifiers with the parcel identifiers for the parcels that are atleast partially in the respective cells identified by the respectivecell identifiers. Thus, the above described systems and methods can beused to search and determine the region/parcel in which the location(111) of the mobile device (163) is positioned, by computing the cellidentifier from the coordinates of the location (111) at thecorresponding resolution and looking up the parcel identifiers based onthe cell identifier.

In one embodiment, it is preferred to approximate the parcels (and thusthe parcel boundaries) with cells with a resolution level correspondingto the fifth digit after the decimal point in longitude and latitudecoordinates. Since the cells at such a resolution level have a maximumsize about 1.1 meters on the surface of the earth, the cellrepresentations of the parcels have a precision at 1 meter level.However, an alternative resolution level, such as 1 foot, 1 yard, etc.can be used in a similar way.

In one embodiment, to determine the households of the mobile devices,the locations (e.g., 111) of mobile devices (e.g., 109) are monitoredfor a period of time (e.g., one month, three months, half a year, ayear, etc.). The identities of the residential parcels that contain thelocations are determined or looked up for the locations of the mobiledevices. The timing of the locations in the respective residentialparcels is used to determine different visitation frequencies; and theserver (187) selects a residential parcel as the home of the mobiledevice (109) based on the visitation frequencies, and thus determinesthe home address of the mobile device (109).

In one embodiment of approximating the parcels/parcel boundaries, when acell falls into both a residential parcel and a commercial parcel, thecell is considered to be within the residential parcel. When a cellfalls into two residential parcels, the cell is considered to be withinboth residential parcels; and thus, a location found in the cell isconsidered to be in both residential parcels and a visit to bothresidential parcels.

In one embodiment, each location (e.g., 111) of the mobile device (e.g.,109) that is monitored during the period of time is tagged with thetimestamp at which the location (e.g., 111) is determined or observed.The location coordinates is associated with the timestamp of thelocation and the device identifier of the respective mobile device. Thedevice identifier uniquely identifier a mobile device (e.g., 109) fromthe set of mobile devices that are monitored by the system.

In one embodiment, a base file of visitation is created for each pair ofa device identifier identifying a mobile device (109) and a parcelidentifier of a residential parcel (101) that has been visited by themobile device (109) in the period of time of monitoring.

For example, the base file may include the number of visits (num_visits)by the mobile device (109) to the residential parcel, determined by thecount of distinct days in which locations of the mobile device (109) aredetermined to be within the cells representing the residential parcel(101), which indicates a frequency of visits to the residential parcel.

For example, the base file may further include the number of days(days_afterhour) that mobile device (109) was seen at the residentialparcel (101) during night hours/outside working hours (e.g., between 7pm and 8 am), which indicates a frequency of visits to the residentialparcel after typically working hours.

For example, the base file may further include the number of weekenddays (days_weekend) when the mobile device (109) was seen at theresidential parcel (101), which indicates a frequency of visits to theresidential parcel during weekends.

For example, the base file may further include the data identifying thelast time the mobile device (109) was seen at the residential parcel(101).

For example, the base file may further include an indication of whetherthe mobile device (109) has visited the residential parcel (101) beforethe time period, and if so the recency of the visits (e.g., the timelast seen at the residential parcel (101) before the time period). Inone embodiment, the indication and the recency are used to compute afirst weight w1 for a score of the residential parcel (101).

In one embodiment, the base file also includes the total number ofresidential parcels the mobile device (109) has visited during the timeperiod and an indication of whether the residential parcel (101) wasselected as the home of the mobile device (109) previously. In oneembodiment, the total number of residential parcels and the indicationof prior home designation are used to compute a second weight w2 for thescore of the residential parcel (101).

In one embodiment, the base file also includes a third weight w3determined based on the identity of a telecommunication carrier of themobile device (109) to account for different practices associated withdifferent telecommunication carriers.

In one embodiment, a set of confidence level 1 home parcel prospects isdetermined based on filtering the device-parcel pairs using theparameters stored in the base files. For example, in one embodiment, forthe mobile device (109), a home parcel prospect is required to havenum_visits above a first threshold and, either days_afterhour above asecond threshold or days_weekend above a third threshold.

In one embodiment, the first, second, third thresholds are determinedbased on a sparsity parameter calculated based the total number ofincoming impressions, local impression latitude/longitude density, andmobile device counts at and around the residential parcel (101)(averaged over nearby parcels). For example, the sparsity parameter maybe weighted differently to generate the first, second, third thresholds.In one embodiment, the second threshold for days_afterhour is the sameas the third threshold for days_weekend.

After calculating the number of mobile devices seen at each residentialparcel (e.g., 101), the server (187) determines home parcels of themobile devices. If the mobile device (109) has only one home parcelprospect, the home parcel prospect is determined as the home parcel ofthe mobile device (109).

If the mobile device (109) has a plurality of home parcel prospects, theserver (187) identifies a home parcel based on the scores of the homeparcel prospects and the number of mobile devices seen at the respectivehome parcel prospects.

For example, the server (187) starts with a first device threshold(e.g., 10) and determines a subset of the home parcel prospects thathave less mobile devices than the first device threshold. If the subsetis not empty, the home parcel prospect having the highest score in thesubset is identified as the home parcel of the mobile device (109).

However, if the subset identified using the first device threshold isempty, the server (187) proceeds with a higher second device threshold(e.g., 50) to select the subset that have less mobile devices than thesecond device threshold. If the subset is not empty, the home parcelprospect having the highest number of visits (e.g., num_visits), or thehighest score, in the subset is identified as the home parcel of themobile device (109).

Similarly, if the subset identified using the first device threshold isempty, the server (187) proceeds with a higher third device threshold(e.g., 100), and so on with progressively higher thresholds (e.g., 100,1000).

In one embodiment, the score of each parcel is determined for a mobiledevice based on a sum of the weights w1, w2, and w3 discussed above anda ratio between a function of days_afterhour and a function ofdays_weekend. For example, a score is evaluated as:w1+w2+w3+(days_afterhours+1)/(days_weekend+1)

In one embodiment, if the mobile device (109) does not have a confidencelevel 1 home parcel prospect, the first, second and third thresholds fornum_visits, days_afterhour, days_weekend are relaxed in the filtering toidentify confidence level 2 home parcel prospects. The home of themobile device (109) at level 2 confidence is then determine in a waysimilar to the determination of the home of level 1 confidence. In someembodiments, there may be not requirements on days_afterhour and/ordays_weekend for confidence level 2 computations.

FIG. 17 shows a system of one embodiment to determine the addresses ofreal estate properties in which a mobile device has visited.

In FIG. 17, the database (181) stores the data associating the parcels(301, . . . , 303) with their respective addresses (e.g., 311, . . . ,313), such as street addresses, mailing addresses, etc. In oneembodiment, the database (181) may further store known information ofthe parcels (301, . . . , 311) and/or the addresses (311, . . . , 313)such as the property tax histories, the service records, creditinformation, etc. Such information of a parcel can be attached to theidentifier of a mobile device (109) after the parcel is identified as ahome of the mobile device (109).

In FIG. 17, each parcel (e.g., 301) is represented by a set of cellidentifiers (e.g., 161, . . . , 163) to represent a region (e.g., 101),where the region (101) is defined by its parcel boundary data, such as aset of vertexes (e.g., 123) on the parcel boundary. In one embodiment,the cells corresponding to the set of cell identifiers (e.g., 161, . . ., 163) approximate the region (e.g., 101) of the parcel (e.g., 301) to aresolution/precision that is about 1 meter.

In FIG. 17, the mobile device (109) is configured to store and/or trackits locations (e.g., 101) using a location determination system. For alocation (111) recorded by the mobile device (109), the mobile device(109) provides data to represent a location instance (301), whichincludes the coordinates (305) of the location (111), an identifier(307) of the mobile device (109), and a timestamp (309) identifying adate and time of the location instance (301). The location instance(301) represents a data point of observing a visit of the mobile device(109) identified by the device identifier (307) at the location (101)specified by the location coordinates (305) at a date and time indicatedby the timestamp (309).

In one embodiment, the location coordinates (305) is converted to a cellidentifier (153) in a way as illustrated in FIGS. 12-13. The server(187) searches the set of cell identifiers (e.g., 161, . . . , 163, . .. , 165, . . . ) representing the parcels (301, . . . , 303, . . . ) fora match to the cell identifier (153) converted from the locationcoordinates and associates the location instance (301) with the address(311) or parcel of the marching cell identifier.

In one embodiment, to identify the household of the mobile device, thecell identifiers (e.g., 161, . . . , 163, . . . , 165, . . . ) arelimited to cells that contain at least a part of residential parcels.Thus, the location instance (301) is linked to an address (311) visitedby the mobile device (109).

In general, during a period of time, a mobile device (109) may visitmore than one parcel for various activities. Thus, more than one addressmay be associated with the location instances (e.g., 301) of the mobiledevice (109). Further, a household may use more than one mobile device(e.g., 109) and may be visited by guests who use mobile devices.

FIGS. 18 and 19 show a system of one embodiment to select a home addressof a mobile device from address of real estate properties that have beenvisited by a mobile device during a period of time.

In FIG. 18, based on the association of the location instances (e.g.,301) with the addresses (311, . . . , 313) of the parcels (e.g., 301, .. . , 313) as determined in a way as illustrated in FIG. 17, the server(187) generates a visitation dataset (315) for each of the addresses(311, . . . , 131) that have been visited by the mobile device (109)identified by the device identifier (307).

In FIG. 18, a typical visitation dataset (315) includes data such as thenumber of visits (321) to the visited address (311) by the mobile device(109)/device identifier (307) during the period of time, the date andtime of the last visit (323), the number of days visited at night (325),the number of days visited during weekend (327), etc. In one embodiment,the number of visits (321) is the number of distinct days the address(311) has been visited by the mobile device (109) represented by thedevice identifier (307).

In FIG. 18, filters are applied to the addresses (e.g., 311, . . . ,313) visited by the device identifier (307) to select the home addresscandidates (e.g., 331, . . . , 333) for the device identifier (307).

For example, if the number of visits (321) of the visited address (311)is lower than a threshold, the corresponding visited address (311) canbe removed from the home address candidates (331, . . . , 333) for thedevice identifier (307).

For example, if the number of days visited at night (325) or the numberof days visited during weekend (327) is lower than a threshold, thecorresponding visited address (311) can be removed from the home addresscandidates (331, . . . , 333) for the device identifier (307).

In FIG. 18, the filtering represents a predetermined confidence level inidentifying the home address candidates. When the filtering parametersare changed, the confidence level is adjusted.

In general, a home address candidate (e.g., 331) can be found aspotential home for a plurality of device identifiers (e.g., 307, . . . ,308) that have visited the same address.

When the filtering results in a single home address candidate (e.g.,331) for the device identifier (307), the single home address candidate(e.g., 331) is determined to be the home address of the deviceidentifier (307).

When the filtering results in a plurality of home address candidates(e.g., 331, . . . , 333) for the device identifier (307), a method ofFIG. 19 can be used to identify one of the candidates (e.g., 331, . . ., 333) as the home address.

In FIG. 19, for each of the home address candidates (331, . . . , 333)of the device identifier (307), the server (187) computes a score (341)based on the visitation dataset (315) of the corresponding home addresscandidate (e.g., 331). Further, for each of the home address candidates(331, . . . , 333) of the device identifier (307), the server (187)determines a device count (343) of the device identifiers (e.g., 307, .. . , 308) that have the corresponding address as the home addresscandidate (e.g., 331).

In FIG. 19, a home address is selected based on the device count (e.g.,343) and the score (341) of the home address candidates (e.g., 331, . .. , 333).

In one embodiment, the selection of the home address (335) of the deviceidentifier (307) from the home address candidates (e.g., 331, . . . ,333) favors an address having a low device counter (e.g., 343) but ahigh score (e.g., 341).

For example, the device count (e.g., 343) and the score (341) can becombined in a target function to balance the requirement for a lowdevice count (e.g., 343) and a high score (341). Thus, the values of thetarget function can be compared for different home address candidates(331, . . . , 333) to select the home address (335) with the optimaltarget value.

For example, the server (187) may use a first threshold to select asubset of the home address candidates (331, . . . , 333) that havedevice count (343) lower than the first threshold, and select from thesubset a home address that has the highest score. If the subset selectedaccording to the first threshold is empty, a higher threshold is used.In one embodiment, when the device accounts of the candidates are allabove a particular threshold, the candidate having the highest score isselected as the home address (335). In one embodiment, differentformulas are used to compute the score, based on the device countthreshold used to filter the home address candidates (331, . . . , 333).

In one embodiment, the score used with the first threshold is at least afunction of the number of days (325) visited at night and the number ofdays (327) visited during weekends; and the score used with 1subsequently higher threshold is based on the number of visits.

In one embodiment, when at least two home address candidates have thesame highest score, the system is configured to consider the visitationsobserved in a predetermined strip surrounding the respective parcels ofthe home address candidates to break the tie. In one embodiment, a striphaving a predetermined width (e.g., 10 meters) surrounding the boundaryof a particular residential parcel but not in another residential parcelis associated with the particular residential parcel. The strip can beidentified by identifying the cells that are within the predeterminedwidth outside a residential parcel boundary and not within otherresidential parcels. To break a tie, the system counts not only thevisits (e.g., the number of days of visits, the number of days of visitsmade at night, the number of days of visits made during weekend, etc.)to the residential parcels, but also the corresponding visits to theassociated strip at the boundary of the residential parcels. In oneembodiment, the counts of visits to the associated strips are compareddirectly to break the tie. Alternatively or in combination, the countsof visits to the associated strips are added to the corresponding countsof visits to the corresponding parcels to obtain the augmented scores(e.g., corresponding to the scores (e.g., 341) of the respective homeaddress candidates (e.g., 331)) to break the tie.

FIG. 20 shows a method to identify a home parcel of a mobile deviceaccording to one embodiment. For example, the method of FIG. 20 can beimplemented in a system illustrated in FIG. 1.

In FIG. 20, a computer apparatus, including the server (187) and/or thedatabase (181), receives (361) location instances (e.g., 301), eachidentifying a mobile device (109) (e.g., via the device identifier(307), a location (111) of the mobile device (109) (e.g., identified bythe location coordinates (305), and a date and time (e.g., timestamp(309)) of the mobile device (109) at the location (111).

The computing apparatus determines (363), for each of the locationinstances (301), a residential parcel (e.g., region (101) defined byparcel boundary data) that contains the location (111) of the mobiledevice (109). A residential parcel (e.g., 101) containing the location(111) of the mobile device (109) identified by the location instance(301) represents a visit of the mobile device (109) in the residentialparcel (e.g., 101) at the date and time identified by the locationinstance (e.g., 301).

In one embodiment, if the location (111) is not in a residential parcel(e.g., in a commercial area, in a street, etc.), the location instanceis discarded for the purpose of identifying the home parcel of themobile device.

The computing apparatus computes (365), for each residential parcel(e.g., 101) visited by each mobile device (e.g., 109), a visitationdataset (315), including frequencies of visits of different typesidentified based on timing of visits, such as the total number of visits(321) in a predetermined period of time, the number of days (325) inwhich the mobile device (109) has visited the residential parcel (e.g.,101) at night during the predetermined period of time, the number ofweekend days (327) in which the mobile device (109) has visited theresidential parcel (e.g., 101) during the predetermined period of time.

The computing apparatus identifies (367), for each mobile device (e.g.,109), home candidates (e.g., 331, . . . , 333) by filtering, based onthe visitation dataset, parcels (e.g., 311, . . . , 313) that have beenvisited by the mobile device (109) during the predetermined period oftime.

The computing apparatus counts (369), for each home candidate (e.g.,331), the number of mobile devices (e.g., device count (343)) that areassociated with the home candidate. In one embodiment, for a givenparcel, the computing apparatus counts only the mobile devices that takethe given parcel as a home candidate after the filtering (367) based onthe visitation dataset.

The computing apparatus filters (371), for each mobile device (e.g.,109), the home candidates (e.g., 331, . . . , 333) based on the devicecount (e.g., 343) of the home candidates (e.g., 331). For example, thecomputing apparatus may filter (371) the home candidates (e.g., 331, . .. , 333) with a set of progressively higher threshold for device count,until a non-empty set of filtering result is obtained.

For example, the computing apparatus initially identify home candidatesthat have device counts no more than 10. If the home candidates of themobile device (109) are all larger than 10, the computing apparatus isconfigured to use a higher threshold for the filtering (371) accordingto the device count.

After the filtering (371), the computing apparatus computes (373), foreach mobile device (109), a score (431) for each of filtered homecandidates to designate the home candidate having the highest score asthe home parcel of the mobile device (109).

In one embodiment, the score is computed based on the level of filtering(371) that provides non-empty results. For example, in one embodiment,when the filtering is at the first level (e.g., for home candidateshaving device counts no more than 10), the score for a home candidate(331) is based on a ratio between the number of days (325) the mobiledevice (109) has been observed to be at the home candidate (331) atnight time and the number of days (327) the mobile device (109) has beenobserved to be at the home candidate (331) during weekends; and when thefiltering is at a higher level, the score is based on the number (321)of visits.

In one embodiment, the score is based on a weight determined based onrecency of location instances (e.g., 301) of the respective mobiledevice (109) in the respective region (311).

In one embodiment, the score is based on a weight determined based on atotal number of different regions that have location instances of therespective mobile device.

In one embodiment, the score is based on a weight determined based onwhether the respective region has been previously identified as the homeof the mobile device.

In one embodiment, the filtering (367) of the parcels (311, . . . , 313)that have been visited by the mobile device (109) is based on athreshold computed for a respective parcel to determine whether therespective parcel is to be filtered out. The threshold is computed basedat least in part on: a count of location instances of different mobiledevices located in the respective parcel; and a count of differentmobile devices of location instances located in the respective parcel.In one embodiment, the threshold is computed based further on an averagecount of different mobile devices of location instances located in therespective parcel and neighboring parcels of the respective parcel.

In one embodiment, the respective parcel is not selected as a homecandidate when either the count of night days (325) or the count ofweekend days (327) of the mobile device (109) at the respective parcel(311) meets the threshold requirement in the filtering (367) based onthe visitation dataset (315).

The server (187) and/or the database (181) can be implemented as acomputer apparatus in the form of a data processing system illustratedin FIG. 15.

FIG. 15 illustrates a data processing system according to oneembodiment. While FIG. 15 illustrates various components of a computersystem, it is not intended to represent any particular architecture ormanner of interconnecting the components. One embodiment may use othersystems that have fewer or more components than those shown in FIG. 15.

In FIG. 15, the data processing system (200) includes an inter-connect(201) (e.g., bus and system core logic), which interconnects one or moremicroprocessors (203) and memory (204). The microprocessor (203) iscoupled to cache memory (209) in the example of FIG. 15.

In one embodiment, the inter-connect (201) interconnects themicroprocessor(s) (203) and the memory (204) together and alsointerconnects them to input/output (I/O) device(s) (205) via I/Ocontroller(s) (207). I/O devices (205) may include a display deviceand/or peripheral devices, such as mice, keyboards, modems, networkinterfaces, printers, scanners, video cameras and other devices known inthe art. In one embodiment, when the data processing system is a serversystem, some of the I/O devices (205), such as touch screens, printers,scanners, mice, and/or keyboards, are optional.

In one embodiment, the inter-connect (201) includes one or more busesconnected to one another through various bridges, controllers and/oradapters. In one embodiment the I/O controllers (207) include a USB(Universal Serial Bus) adapter for controlling USB peripherals, and/oran IEEE-1394 bus adapter for controlling IEEE-1394 peripherals.

In one embodiment, the memory (204) includes one or more of: ROM (ReadOnly Memory), volatile RAM (Random Access Memory), and non-volatilememory, such as hard drive, flash memory, etc.

Volatile RAM is typically implemented as dynamic RAM (DRAM) whichrequires power continually in order to refresh or maintain the data inthe memory. Non-volatile memory is typically a magnetic hard drive, amagnetic optical drive, an optical drive (e.g., a DVD RAM), or othertype of memory system which maintains data even after power is removedfrom the system. The non-volatile memory may also be a random accessmemory.

The non-volatile memory can be a local device coupled directly to therest of the components in the data processing system. A non-volatilememory that is remote from the system, such as a network storage devicecoupled to the data processing system through a network interface suchas a modem or Ethernet interface, can also be used.

In this description, some functions and operations are described asbeing performed by or caused by software code to simplify description.However, such expressions are also used to specify that the functionsresult from execution of the code/instructions by a processor, such as amicroprocessor.

Alternatively, or in combination, the functions and operations asdescribed here can be implemented using special purpose circuitry, withor without software instructions, such as using Application-SpecificIntegrated Circuit (ASIC) or Field-Programmable Gate Array (FPGA).Embodiments can be implemented using hardwired circuitry withoutsoftware instructions, or in combination with software instructions.Thus, the techniques are limited neither to any specific combination ofhardware circuitry and software, nor to any particular source for theinstructions executed by the data processing system.

While one embodiment can be implemented in fully functioning computersand computer systems, various embodiments are capable of beingdistributed as a computing product in a variety of forms and are capableof being applied regardless of the particular type of machine orcomputer-readable media used to actually effect the distribution.

At least some aspects disclosed can be embodied, at least in part, insoftware. That is, the techniques may be carried out in a computersystem or other data processing system in response to its processor,such as a microprocessor, executing sequences of instructions containedin a memory, such as ROM, volatile RAM, non-volatile memory, cache or aremote storage device.

Routines executed to implement the embodiments may be implemented aspart of an operating system or a specific application, component,program, object, module or sequence of instructions referred to as“computer programs.” The computer programs typically include one or moreinstructions set at various times in various memory and storage devicesin a computer, and that, when read and executed by one or moreprocessors in a computer, cause the computer to perform operationsnecessary to execute elements involving the various aspects.

A machine readable medium can be used to store software and data whichwhen executed by a data processing system causes the system to performvarious methods. The executable software and data may be stored invarious places including for example ROM, volatile RAM, non-volatilememory and/or cache. Portions of this software and/or data may be storedin any one of these storage devices. Further, the data and instructionscan be obtained from centralized servers or peer to peer networks.Different portions of the data and instructions can be obtained fromdifferent centralized servers and/or peer to peer networks at differenttimes and in different communication sessions or in a same communicationsession. The data and instructions can be obtained in entirety prior tothe execution of the applications. Alternatively, portions of the dataand instructions can be obtained dynamically, just in time, when neededfor execution. Thus, it is not required that the data and instructionsbe on a machine readable medium in entirety at a particular instance oftime.

Examples of computer-readable media include but are not limited torecordable and non-recordable type media such as volatile andnon-volatile memory devices, read only memory (ROM), random accessmemory (RAM), flash memory devices, floppy and other removable disks,magnetic disk storage media, optical storage media (e.g., Compact DiskRead-Only Memory (CD ROMS), Digital Versatile Disks (DVDs), etc.), amongothers. The computer-readable media may store the instructions.

The instructions may also be embodied in digital and analogcommunication links for electrical, optical, acoustical or other formsof propagated signals, such as carrier waves, infrared signals, digitalsignals, etc. However, propagated signals, such as carrier waves,infrared signals, digital signals, etc. are not tangible machinereadable medium and are not configured to store instructions.

In general, a machine readable medium includes any mechanism thatprovides (i.e., stores and/or transmits) information in a formaccessible by a machine (e.g., a computer, network device, personaldigital assistant, manufacturing tool, any device with a set of one ormore processors, etc.).

In various embodiments, hardwired circuitry may be used in combinationwith software instructions to implement the techniques. Thus, thetechniques are neither limited to any specific combination of hardwarecircuitry and software nor to any particular source for the instructionsexecuted by the data processing system.

The description and drawings are illustrative and are not to beconstrued as limiting. Numerous specific details are described toprovide a thorough understanding. However, in certain instances, wellknown or conventional details are not described in order to avoidobscuring the description. References to one or an embodiment in thepresent disclosure are not necessarily references to the sameembodiment; and, such references mean at least one.

The use of headings herein is merely provided for ease of reference, andshall not be interpreted in any way to limit this disclosure or thefollowing claims.

Reference to “one embodiment” or “an embodiment” means that a particularfeature, structure, or characteristic described in connection with theembodiment is included in at least one embodiment of the disclosure. Theappearances of the phrase “in one embodiment” in various places in thespecification are not necessarily all referring to the same embodiment,and are not necessarily all referring to separate or alternativeembodiments mutually exclusive of other embodiments. Moreover, variousfeatures are described which may be exhibited by one embodiment and notby others. Similarly, various requirements are described which may berequirements for one embodiment but not other embodiments. Unlessexcluded by explicit description and/or apparent incompatibility, anycombination of various features described in this description is alsoincluded here. For example, the features described above in connectionwith “in one embodiment” or “in some embodiments” can be all optionallyincluded in one implementation, except where the dependency of certainfeatures on other features, as apparent from the description, may limitthe options of excluding selected features from the implementation, andincompatibility of certain features with other features, as apparentfrom the description, may limit the options of including selectedfeatures together in the implementation.

In the foregoing specification, the disclosure has been described withreference to specific exemplary embodiments thereof. It will be evidentthat various modifications may be made thereto without departing fromthe broader spirit and scope as set forth in the following claims. Thespecification and drawings are, accordingly, to be regarded in anillustrative sense rather than a restrictive sense.

What is claimed is:
 1. A method implemented in a computing device, themethod comprising: receiving, in the computing device, data identifyinga set of location instances in a period of time, each respectivelocation instance of the location instances identifying: a mobiledevice, a location of the mobile device, and a timestamp of the locationof the mobile device in the period of time identifying, by the computingdevice, a set of regions in which the location instances are located;computing, by the computing device, a visitation dataset for eachrespective region visited by each respective mobile device, wherein thevisitation dataset identifies a plurality of frequencies of visitationsof different types; filtering, by the computing device, regions visitedby the respective mobile device to identify one or more regioncandidates as a home of the respective mobile device; and in response toa determination that the respective mobile device has more than oneregion candidate resulting from the filtering, selecting by thecomputing device the home of the respective mobile device from the morethan one region candidate, based at least in part on a score computedfrom the visitation dataset, wherein the score is based on a ratiobetween: a function of a count of different days of location instancesof the respective mobile device that are located within the respectiveregion but have timestamps outside working hours; and a function of acount of different days of location instances of the respective mobiledevice that are located within the respective region and have timestampsin weekends.
 2. The method of claim 1, wherein the score is based on acount of different days of location instances of the respective mobiledevice that are located within the respective region but have timestampsoutside working hours.
 3. The method of claim 1, wherein the score isbased on a count of different days of location instances of therespective mobile device that are located within the respective regionand have timestamps in weekends.
 4. The method of claim 1, wherein thescore is based on a weight determined based on recency of locationinstances of the respective mobile device in the respective region. 5.The method of claim 1, wherein the score is based on a weight determinedbased on a total number of different regions that have locationinstances of the respective mobile device.
 6. The method of claim 1,wherein the score is based on a weight determined based on whether therespective region has been previously identified as the home of themobile device.
 7. The method of claim 1, wherein the set of regions arelimited to and defined by parcel boundaries of land in residentialareas; and the method further comprises: breaking a tie in the scorebased on visitations to an area of a predetermined width surrounding aboundary of each respective residential region but not within boundariesof residential regions.
 8. The method of claim 7, further comprising:storing a set of cell identifiers of a hierarchical grid system havinggrid lines aligned with numbers of digits of precision in longitudinaland latitudinal coordinates on the earth, including store eachrespective cell identifier of the set of cell identifiers in associationwith a set of region identifiers identifying one or more regions thatare at least partially in a cell identified by the respective cellidentifier; wherein the identifying of the set of regions in which thelocation instances are located includes, for the respective locationinstance in the set of location instances in the period of time:converting to a cell identifier the location of the mobile deviceidentified in the respective location instance; searching in the set ofcell identifiers for a match of the cell identifier converted from thelocation of the mobile device identified in the respective locationinstance; retrieving a set of region identifiers associated with thematch identified via the searching; and identifying the respectivelocation instance as being within one or more regions identified by theset of region identifiers retrieved via the searching.
 9. The method ofclaim 1, wherein the visitation dataset includes: a count of differentdays of location instances of the respective mobile device locatedwithin the respective region; a count of different days of locationinstances of the respective mobile device that are located within therespective region and have timestamps in night hours; and a count ofdifferent days of location instances of the respective mobile devicethat are located within the respective region and have timestamps inweekends.
 10. The method of claim 9, wherein the night hours are between7 pm to 8 am of a day; and the weekends are Saturdays and Sundays. 11.The method of claim 9, wherein the filtering is based on a thresholdcomputed based at least in part on: a count of location instances ofdifferent mobile devices located in the respective region; and a countof different mobile devices of location instances located in therespective region.
 12. The method of claim 11, wherein in response to adetermination that the filtering produces no region candidate for therespective mobile device, relaxing a criterion of the filtering.
 13. Themethod of claim 11, wherein the threshold is computed based further onan average count of different mobile devices of location instanceslocated in the respective region and neighboring regions of therespective region.
 14. The method of claim 11, wherein the respectiveregion is not selected as a region candidate when the threshold ishigher than both the count of different days of location instances ofthe respective mobile device that are located within the respectiveregion but have timestamps in night hours; and the count of differentdays of location instances of the respective mobile device that arelocated within the respective region but have timestamps in weekends.15. A method implemented in a computing device, the method comprising:receiving, in the computing device, data identifying a set of locationinstances in a period of time, each respective location instance of thelocation instances identifying: a mobile device, a location of themobile device, and a timestamp of the location of the mobile device inthe period of time identifying, by the computing device, a set ofregions in which the location instances are located; computing, by thecomputing device, a visitation dataset for each respective regionvisited by each respective mobile device, wherein the visitation datasetidentifies a plurality of frequencies of visitations of different types;filtering, by the computing device, regions visited by the respectivemobile device to identify one or more region candidates as a home of therespective mobile device; and in response to a determination that therespective mobile device has more than one region candidate resultingfrom the filtering, selecting by the computing device the home of therespective mobile device from the more than one region candidate, basedat least in part on a score computed from the visitation dataset,wherein the selecting of the home of the respective mobile deviceincludes: identifying a first subset of the one or more regioncandidates, wherein each region candidate in the first subset having acount of different mobile devices less than a first threshold; andselecting the home of the respective mobile device from the first subsetbased on the score.
 16. The method of claim 15, further comprising:determining, by the computing device, a count of different mobiledevices having location instances in each of the regions; wherein theselecting of the home of the respective mobile device is further basedon the count of different mobile devices having location instances ineach of the regions.
 17. The method of claim 15, wherein the selectingof the home of the respective mobile device further includes, inresponse to a determination that the first subset is empty: identifyinga second subset of the one or more region candidates, wherein eachregion candidate in the second subset having a count of different mobiledevices less than a second threshold greater than the first threshold;and selecting the home of the respective mobile device from the secondsubset based on the score.
 18. A non-transitory computer storage mediumstoring instructions configured to instruct a computing device toperform a method, the method comprising: receiving, in the computingdevice, data identifying a set of location instances in a period oftime, each respective location instance of the location instancesidentifying: a mobile device, a location of the mobile device, and atimestamp of the location of the mobile device in the period of time;identifying, by the computing device, a set of regions in which thelocation instances are located; computing, by the computing device, avisitation dataset for each respective region visited by each respectivemobile device, wherein the visitation dataset identifies a plurality offrequencies of visitations of different types; filtering, by thecomputing device, regions visited by the respective mobile device toidentify one or more region candidates as a home of the respectivemobile device; and in response to a determination that the respectivemobile device has more than one region candidate resulting from thefiltering, selecting by the computing device the home of the respectivemobile device from the more than one region candidate, based at least inpart on a score computed from the visitation dataset; wherein thefiltering is based on a threshold computed based at least in part on: acount of location instances of different mobile devices located in therespective region; and a count of different mobile devices of locationinstances located in the respective region.
 19. A computing device,comprising: at least one microprocessor; and memory storing instructionsconfigured to instruct the at least one microprocessor to: receive, inthe computing device, data identifying a set of location instances in aperiod of time, each respective location instance of the locationinstances identifying a mobile device, a location of the mobile device,and a timestamp of the location of the mobile device in the period oftime; identify, by the computing device, a set of regions in which thelocation instances are located, wherein the set of regions are limitedto and defined by parcel boundaries of land in residential areas;compute, by the computing device, a visitation dataset for eachrespective region visited by each respective mobile device, wherein thevisitation dataset identifies a plurality of frequencies of visitationsof different types; filter, by the computing device, regions visited bythe respective mobile device to identify one or more region candidatesas a home of the respective mobile device; in response to adetermination that the respective mobile device has more than one regioncandidate resulting from the filtering, select by the computing devicethe home of the respective mobile device from the more than one regioncandidate, based at least in part on a score computed from thevisitation dataset; and break a tie in the score based on visitations toan area of a predetermined width surrounding a boundary of eachrespective residential region but not within boundaries of residentialregions.